home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / Think Class Libraries / CommToolbox (modified) / Headers / CTermPane.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-30  |  8.4 KB  |  252 lines  |  [TEXT/KAHL]

  1. /* ∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞
  2.  
  3.     CTermPane.h
  4.     
  5.     Commtoolbox terminal emulation class.
  6.     
  7.     SUPERCLASS = CPanorama.
  8.     
  9.     Copyright © 1992-93 Romain Vignes. All rights reserved.
  10.     Modified 1994 Ithran Einhorn.
  11.     
  12. ∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞ */
  13.  
  14. #ifndef _H_CTermPane
  15. #define _H_CTermPane
  16.  
  17. #include <Terminals.h>                /* Apple includes */
  18.  
  19. #ifdef __USETHREADS__
  20.     #include "CThread.h"            /* Thread Manager */
  21. #endif
  22.  
  23. #include <CAbstractText.h>            /* Interface for its superclass */
  24.  
  25. #include "CConnection.h"
  26. #include "CFileTransfer.h"
  27. #include "CScrollBuffer.h"
  28.  
  29. /* Constants & Macros */
  30.  
  31. #define EMPTY_STR            0L
  32.  
  33.  
  34. /* Terminal specific commands */
  35.  
  36. #define cmdTermChoose        2200    /* Terminal tool setup */
  37. #define cmdTermClear        2201    /* Screen clearing */
  38. #define cmdTermReset        2202    /* Terminal reset */
  39. #define cmdTabCopy            2203    /* Table copy */
  40.  
  41. // parameters for private copy method
  42. enum {
  43.     kStdCopy = 0,
  44.     kTabCopy = 1
  45. };
  46.  
  47. /* Broadcast indications */
  48.  
  49. enum    {
  50.     termSizeChangedInd = 2201        /* Emulation resizing */
  51. };
  52.  
  53. typedef enum { kBreakLeft, kBreakRight } BreakDirection;
  54.  
  55. typedef TerminalSendProcPtr                TMSendProcPtr;
  56. typedef TerminalBreakProcPtr            TMBreakProcPtr;
  57. typedef TerminalSearchCallBackProcPtr    TMSearchProcPtr;
  58. typedef TerminalClikLoopProcPtr            TMClickProcPtr;
  59. typedef TerminalEnvironsProcPtr            TMEnvProcPtr;
  60. typedef TerminalChooseIdleProcPtr        TMChIdleProcPtr;
  61.  
  62. // Is the Apple definition wrong?
  63. //typedef TerminalCacheProcPtr            TMCacheProcPtr;
  64. typedef pascal long (*TMCacheProcPtr) (long refCon, TermDataBlock *theTermData);
  65.  
  66. /* Forward declarations */
  67.  
  68. class CCluster;
  69.  
  70. /* Class definition */
  71.  
  72. class CTermPane : public CAbstractText {
  73.  
  74. protected:
  75.  
  76.     /* Class Variables */
  77.         
  78.     static CCluster    *cTermList;
  79.     
  80.     /* Instance Variables */
  81.  
  82.     TermHandle        itsTerm;
  83.     
  84.     Ptr                ReadBuffer;
  85.     long            readAmount;
  86.     CMFlags            readFlags;
  87.     CMErr            asyncErr;
  88.     
  89.     Boolean            asyncRead;
  90.     Boolean            readCompleted;
  91.     long            TimeOutLen;
  92.     CConnection        *itsConnection;
  93.     CFileTransfer    *itsFileTransfer;
  94.     
  95.     #ifdef __USETHREADS__
  96.     CThread            *itsIdleThread;
  97.     #endif
  98.     
  99.     long            origLine, lastLine;    // helper variables for mouse tracking
  100.     long            origCharOffset;
  101.     long            lastCharOffset;
  102.     Boolean            reallyActive;        /* Is the pane really active?        */
  103.     
  104.     long            numCachedLines;        /* scrollback data objects            */
  105.     CScrollBuffer    *itsScrollBuffer;
  106.     
  107.     int                topMargin;            /* border on top of terminal        */
  108.     
  109.     /* private methods */
  110.     void                    changedConfig(Boolean doBroadcast = true);
  111.     long                    EnTab(Handle selectionHdl);
  112.     virtual void            SetTermOffset(void);    
  113.     void                    TestTerm(void);
  114.     virtual void            DeltaTermSize(int *deltaH, int *deltaV);
  115.     virtual void            CalcTermRect(Rect *frameRect);
  116.     virtual void            CalcFullRect(Rect *frameRect);
  117.     virtual void            CalcTermViewRect(Rect *frameRect);
  118.     virtual void            GetTermRect(Rect *frameRect);
  119.     virtual void            EraseTermBorder(void);
  120.     virtual void            AdjustTermPosition(TermPtr oldRecord, TermEnvironRec *theOldEnvirons);
  121.     virtual    void            RefreshLine(int line);
  122.     virtual                    CalcLineRect(int line, Rect *lineRect);
  123.     virtual    short            PixelsToLines(short    pixCount);
  124.     virtual void            GetTermExtent(long *theHExtent,long *theVExtent);
  125.     virtual void            AdjustBounds(void);
  126.         
  127. public:
  128.  
  129.     long            itsSelStart;        /* Start of selection range            */
  130.     long            itsSelEnd;            /* End of selection range            */
  131.     long            itsSelAnchor;        /* Anchor of selection range        */
  132.     
  133.     /* Class Methods */
  134.     
  135.     static OSErr            cCheckToolName(Str63 toolName);
  136.     static void                cInitManager(void);
  137.     static short            cGetTMVersion(void);
  138.     static void                cTermIdle(void);
  139.     static pascal void         *cOneTermIdle (void *threadParam);
  140.     static Boolean            cTestToolMenu(short theMenu, short theItem);
  141.     static Boolean            cTestToolEvent(EventRecord *macEvent,WindowPtr theWindow);
  142.     
  143.     /* Instance Methods */
  144.     
  145.     void                    ITermPane(CView *anEnclosure, CBureaucrat *aSupervisor,
  146.                                         Str63 toolName,Str63 commName,Str63 xferName,TMFlags flags,
  147.                                         TMSendProcPtr sendProc,TMCacheProcPtr cacheProc,
  148.                                         TMBreakProcPtr breakProc,TMClickProcPtr clickLoop,
  149.                                         TMEnvProcPtr environsProc,long refCon,long userData,
  150.                                         Boolean isAsync,long TimeOut = 60L);
  151.     virtual void            Dispose(void);
  152.     virtual void            Draw(Rect *area);
  153.     virtual void            DrawAllOffscreen(Rect *area);
  154.     virtual void            RefreshOffscreen(void);
  155.     virtual void            DoCommand(long theCommand);
  156.     virtual void            UpdateMenus(void);
  157.     virtual void            TermChoose(void);
  158.     virtual void            DoIdle(void);
  159.     virtual void            AdjustCursor(Point where,RgnHandle mouseRgn);    
  160.     virtual void            Activate(void);
  161.     virtual void            Deactivate(void);
  162.     virtual void            DoClick(Point hitPt,short modifierKeys,long when);
  163.     virtual void            ResizeFrame(Rect *delta);
  164.     virtual void            DoKeyDown(char theChar,Byte keyCode,EventRecord    *macEvent);
  165.     virtual void            DoAutoKey(char theChar,Byte keyCode,EventRecord    *macEvent);
  166.     virtual short            SetConfig(char *theConfig);
  167.     virtual void            GetToolName(Str63 toolName);
  168.     virtual Ptr                GetConfig(void);
  169.     virtual Boolean            DoMenu(short theMenu,short theItem);
  170.     virtual Boolean            DoEvent(EventRecord *theEvent,WindowPtr theWindow);
  171.     virtual TermHandle        GetTermHandle(void);
  172.     virtual long            DoStream(Ptr buffer,long buffSize,CMFlags flags);
  173.     virtual void            TermClear(void);
  174.     virtual void            Reset(void);
  175.     virtual void            DoTabCopy(void);
  176.     virtual void            GetExtent(long *theHExtent,long *theVExtent);
  177.     virtual OSErr            GetEnvirons(TermEnvironRec *theEnvirons);
  178.     virtual void            GetLine(short lineNo,TermDataBlock *theTermData);
  179.     virtual void            Scroll(long hDelta,long vDelta,Boolean redraw);
  180.     virtual void            ScrollTerminal(int hDelta, int vDelta);
  181.     virtual void            DoSelectAll(void);
  182.     virtual void            BindConnection(CConnection *newConnection);
  183.     virtual    CConnection        *GetConnection(void);
  184.     virtual    CFileTransfer    *GetFileTransfer(void);
  185.     virtual    Point            GetCursor(TMCursorTypes curType = cursorText);
  186.     
  187.     // member function overrides
  188.     
  189.     void            Prepare(void);
  190.     
  191.     void            SetWholeLines(Boolean aWholeLines);
  192.     void            SetTextPtr(Ptr textPtr, long numChars);
  193.     Handle            GetTextHandle(void);
  194.     void            SetFontNumber(short aFontNumber);
  195.     //void            SetFontName(Str255 aFontName);
  196.     void            SetFontStyle(short aStyle);
  197.     void            SetFontSize(short aSize);
  198.     void            SetTextMode(short aMode);
  199.     void            SetAlignCmd(long anAlignment);
  200.     long            GetAlignCmd( void);
  201.     void            SetSpacingCmd(long aSpacingCmd);
  202.     long            GetHeight( long startLine, long endLine);
  203.     long            GetCharOffset( LongPt *aPt);
  204.     void            GetCharPoint( long offset, LongPt *aPt);
  205.     void            GetTextStyle( short *whichAttributes, TextStyle *aStyle);
  206.     void            GetCharStyle( long charOffset, TextStyle *theStyle);
  207.     long            FindLine(long charPos);
  208.     long            GetLength( void);
  209.     void            TypeChar(char theChar, short theModifiers);
  210.     void            SetSelection( long selStart, long selEnd, Boolean fRedraw);
  211.     long            GetSpacingCmd( void);
  212.     void            GetSelection( long *selStart, long *selEnd);
  213.     long            GetNumLines(void);
  214.     Handle            CopyTextRange( long start, long end);
  215.     void            PerformEditCommand( long theCommand);
  216.     void            InsertTextPtr( Ptr text, long length, Boolean fRedraw);
  217.     void            GetFrameSpan(short *theHSpan, short *theVSpan);
  218.     
  219.     // utility routines
  220.     void                    GetCharBefore( long *aPosition, tCharBuf charBuf);
  221.     void                    GetCharAfter( long *aPosition, tCharBuf charBuf);
  222.     virtual    void            GetCharAt( long *aPosition, tCharBuf charBuf);
  223.     virtual    long            LinesScrolledUp(void);
  224.     virtual    long            LinesScrolledDown(void);
  225.     virtual    long            TerminalTextLength(long startLine, long endLine);
  226.     virtual    long            GetLineStart(long line);
  227.     virtual    long            GetLineEnd(long line);
  228.     virtual    long            GetLineLength(long line);
  229.     virtual void            GetLineInfo(long line, long *start, long *len);
  230.     
  231.     // static call-back routines
  232.     static pascal CMErr        DefEnvironsProc (long refCon, ConnEnvironRecPtr theEnvPtr);
  233.     static pascal long        DefSendProc (Ptr buffPtr, long howMany, long refCon, CMFlags flags);
  234.     static pascal void        DefBreakProc (long duration, long refCon);
  235.     static pascal void        DefReadCompletedProc (ConnHandle myConn);
  236.     static pascal long        DefCacheProc (long refCon, TermDataBlock *theTermData);
  237.     static pascal Boolean    DefClikLoop (long refCon);
  238.     
  239.     // cache support routines
  240.     virtual void            DrawLineRange(long startLine, long endLine, long startLineOffset,
  241.                                           Boolean erase);
  242.     virtual void            HiliteTextRange(long startChar, long endChar);
  243.     virtual void            HiliteRect(const Rect *hiliteRect);
  244.     virtual    long            CalcWordBreak(long charPos, BreakDirection direction);
  245.     virtual    Boolean            ProcessCacheClick(Point hitPt);
  246.     virtual void            DoCopy(short copyType = kStdCopy);
  247. };
  248.  
  249. #endif
  250.  
  251. /* ∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞ */
  252.